{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# lab\n",
    "\n",
    "Laboratory tests that have have been mapped to a standard set of measurements. Unmapped measurements are recorded in the customLab table. The lab table is fairly well populated by hospitals. It is possible some rarely obtained lab measurements are not interfaced into the system and therefore will not be available in the database. Absence of a rare lab measurement, such as serum lidocaine concentrations, would not indicate the lab was not drawn. However, absence of a platelet count would likely indicate the value was not obtained."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alistairewj/.local/lib/python3.5/site-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use \"pip install psycopg2-binary\" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.\n",
      "  \"\"\")\n"
     ]
    }
   ],
   "source": [
    "# Import libraries\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import psycopg2\n",
    "import getpass\n",
    "import pdvega\n",
    "\n",
    "# for configuring connection \n",
    "from configobj import ConfigObj\n",
    "import os\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Database: eicu\n",
      "Username: alistairewj\n"
     ]
    }
   ],
   "source": [
    "# Create a database connection using settings from config file\n",
    "config='../db/config.ini'\n",
    "\n",
    "# connection info\n",
    "conn_info = dict()\n",
    "if os.path.isfile(config):\n",
    "    config = ConfigObj(config)\n",
    "    conn_info[\"sqluser\"] = config['username']\n",
    "    conn_info[\"sqlpass\"] = config['password']\n",
    "    conn_info[\"sqlhost\"] = config['host']\n",
    "    conn_info[\"sqlport\"] = config['port']\n",
    "    conn_info[\"dbname\"] = config['dbname']\n",
    "    conn_info[\"schema_name\"] = config['schema_name']\n",
    "else:\n",
    "    conn_info[\"sqluser\"] = 'postgres'\n",
    "    conn_info[\"sqlpass\"] = ''\n",
    "    conn_info[\"sqlhost\"] = 'localhost'\n",
    "    conn_info[\"sqlport\"] = 5432\n",
    "    conn_info[\"dbname\"] = 'eicu'\n",
    "    conn_info[\"schema_name\"] = 'public,eicu_crd'\n",
    "    \n",
    "# Connect to the eICU database\n",
    "print('Database: {}'.format(conn_info['dbname']))\n",
    "print('Username: {}'.format(conn_info[\"sqluser\"]))\n",
    "if conn_info[\"sqlpass\"] == '':\n",
    "    # try connecting without password, i.e. peer or OS authentication\n",
    "    try:\n",
    "        if (conn_info[\"sqlhost\"] == 'localhost') & (conn_info[\"sqlport\"]=='5432'):\n",
    "            con = psycopg2.connect(dbname=conn_info[\"dbname\"],\n",
    "                                   user=conn_info[\"sqluser\"])            \n",
    "        else:\n",
    "            con = psycopg2.connect(dbname=conn_info[\"dbname\"],\n",
    "                                   host=conn_info[\"sqlhost\"],\n",
    "                                   port=conn_info[\"sqlport\"],\n",
    "                                   user=conn_info[\"sqluser\"])\n",
    "    except:\n",
    "        conn_info[\"sqlpass\"] = getpass.getpass('Password: ')\n",
    "\n",
    "        con = psycopg2.connect(dbname=conn_info[\"dbname\"],\n",
    "                               host=conn_info[\"sqlhost\"],\n",
    "                               port=conn_info[\"sqlport\"],\n",
    "                               user=conn_info[\"sqluser\"],\n",
    "                               password=conn_info[\"sqlpass\"])\n",
    "query_schema = 'set search_path to ' + conn_info['schema_name'] + ';'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Examine a single patient"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "patientunitstayid = 2704494"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>patientunitstayid</th>\n",
       "      <th>labid</th>\n",
       "      <th>labresultyear</th>\n",
       "      <th>labresulttime24</th>\n",
       "      <th>labresulttime</th>\n",
       "      <th>labresultoffset</th>\n",
       "      <th>labtypeid</th>\n",
       "      <th>labname</th>\n",
       "      <th>labresult</th>\n",
       "      <th>labresulttext</th>\n",
       "      <th>labmeasurenamesystem</th>\n",
       "      <th>labmeasurenameinterface</th>\n",
       "      <th>labresultrevisedyear</th>\n",
       "      <th>labresultrevisedtime24</th>\n",
       "      <th>labresultrevisedtime</th>\n",
       "      <th>labresultrevisedoffset</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2704494</td>\n",
       "      <td>635381067</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:05:00</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99620</td>\n",
       "      <td>1.0</td>\n",
       "      <td>sodium</td>\n",
       "      <td>136.00</td>\n",
       "      <td>136</td>\n",
       "      <td>mmol/L</td>\n",
       "      <td>mmol/L</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:42:48</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99583</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2704494</td>\n",
       "      <td>648998951</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:05:00</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99620</td>\n",
       "      <td>3.0</td>\n",
       "      <td>-monos</td>\n",
       "      <td>6.00</td>\n",
       "      <td>6</td>\n",
       "      <td>%</td>\n",
       "      <td>%</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:52:16</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99573</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2704494</td>\n",
       "      <td>648998947</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:05:00</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99620</td>\n",
       "      <td>3.0</td>\n",
       "      <td>Hgb</td>\n",
       "      <td>9.60</td>\n",
       "      <td>9.6</td>\n",
       "      <td>g/dL</td>\n",
       "      <td>g/dL</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:52:10</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99573</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2704494</td>\n",
       "      <td>648998952</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:05:00</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99620</td>\n",
       "      <td>3.0</td>\n",
       "      <td>MCHC</td>\n",
       "      <td>34.30</td>\n",
       "      <td>34.3</td>\n",
       "      <td>g/dL</td>\n",
       "      <td>g/dL</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:52:10</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99573</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2704494</td>\n",
       "      <td>635381063</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:05:00</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99620</td>\n",
       "      <td>1.0</td>\n",
       "      <td>creatinine</td>\n",
       "      <td>4.23</td>\n",
       "      <td>4.23</td>\n",
       "      <td>mg/dL</td>\n",
       "      <td>mg/dL</td>\n",
       "      <td>2014</td>\n",
       "      <td>00:42:48</td>\n",
       "      <td>midnight</td>\n",
       "      <td>-99583</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   patientunitstayid      labid  labresultyear labresulttime24 labresulttime  \\\n",
       "0            2704494  635381067           2014        00:05:00      midnight   \n",
       "1            2704494  648998951           2014        00:05:00      midnight   \n",
       "2            2704494  648998947           2014        00:05:00      midnight   \n",
       "3            2704494  648998952           2014        00:05:00      midnight   \n",
       "4            2704494  635381063           2014        00:05:00      midnight   \n",
       "\n",
       "   labresultoffset  labtypeid     labname  labresult labresulttext  \\\n",
       "0           -99620        1.0      sodium     136.00           136   \n",
       "1           -99620        3.0      -monos       6.00             6   \n",
       "2           -99620        3.0         Hgb       9.60           9.6   \n",
       "3           -99620        3.0        MCHC      34.30          34.3   \n",
       "4           -99620        1.0  creatinine       4.23          4.23   \n",
       "\n",
       "  labmeasurenamesystem labmeasurenameinterface  labresultrevisedyear  \\\n",
       "0               mmol/L                  mmol/L                  2014   \n",
       "1                    %                       %                  2014   \n",
       "2                 g/dL                    g/dL                  2014   \n",
       "3                 g/dL                    g/dL                  2014   \n",
       "4                mg/dL                   mg/dL                  2014   \n",
       "\n",
       "  labresultrevisedtime24 labresultrevisedtime  labresultrevisedoffset  \n",
       "0               00:42:48             midnight                  -99583  \n",
       "1               00:52:16             midnight                  -99573  \n",
       "2               00:52:10             midnight                  -99573  \n",
       "3               00:52:10             midnight                  -99573  \n",
       "4               00:42:48             midnight                  -99583  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = query_schema + \"\"\"\n",
    "select *\n",
    "from lab\n",
    "where patientunitstayid = {}\n",
    "order by labresultoffset\n",
    "\"\"\".format(patientunitstayid)\n",
    "\n",
    "df = pd.read_sql_query(query, con)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>patientunitstayid</th>\n",
       "      <th>apacheadmissiondx</th>\n",
       "      <th>hospitaladmitoffset</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2704494</td>\n",
       "      <td>Thrombocytopenia</td>\n",
       "      <td>-99779</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   patientunitstayid apacheadmissiondx  hospitaladmitoffset\n",
       "0            2704494  Thrombocytopenia               -99779"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = query_schema + \"\"\"\n",
    "select *\n",
    "from patient\n",
    "where patientunitstayid = {}\n",
    "\"\"\".format(patientunitstayid)\n",
    "\n",
    "pt = pd.read_sql_query(query, con)\n",
    "pt[['patientunitstayid', 'apacheadmissiondx', 'hospitaladmitoffset']]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Immediately we can note the very large negative `labresultoffset`. This likely means we have some lab values pre-ICU. In some cases this will be a lab measured in another hospital location such as the emergency department or hospital floor. In this case, the large value (-99620 minutes, or ~70 days) is surprising, but we can see from the patient table that the patient was admitted to the hospital -99779 minutes before their ICU stay (`hospitaladmitoffset`). This patient was admitted to the ICU with thrombocytopenia (`apacheadmissiondx`), and inspection of the diagnosis table indicates they have a form of cancer, so likely this is a long hospital stay where labs were taken on hospital admission."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Available labs\n",
    "\n",
    "We can group the lab table to summarize all available labs."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "39132531 total vlues for 158 distinct labs.\n",
      "\n",
      "Top 5 labs by frequency:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>labname</th>\n",
       "      <th>n</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>bedside glucose</td>\n",
       "      <td>3175835</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>potassium</td>\n",
       "      <td>1493261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>sodium</td>\n",
       "      <td>1393205</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>glucose</td>\n",
       "      <td>1319496</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Hgb</td>\n",
       "      <td>1298708</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           labname        n\n",
       "0  bedside glucose  3175835\n",
       "1        potassium  1493261\n",
       "2           sodium  1393205\n",
       "3          glucose  1319496\n",
       "4              Hgb  1298708"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = query_schema + \"\"\"\n",
    "select labname, count(*) as n\n",
    "from lab\n",
    "group by labname\n",
    "order by n desc\n",
    "\"\"\".format(patientunitstayid)\n",
    "\n",
    "lab = pd.read_sql_query(query, con)\n",
    "print('{} total vlues for {} distinct labs.'.format(lab['n'].sum(), lab.shape[0]))\n",
    "print('\\nTop 5 labs by frequency:')\n",
    "lab.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The lab table is a large table with over 39 million observations. The most frequent observation is bedside glucose which accounts for almost 10% of the lab table, followed by potassium and sodium."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Hospitals with data available"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>hospitalid</th>\n",
       "      <th>number_of_patients</th>\n",
       "      <th>number_of_patients_with_tbl</th>\n",
       "      <th>data completion</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>73</td>\n",
       "      <td>7059</td>\n",
       "      <td>6861</td>\n",
       "      <td>97.195070</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>167</td>\n",
       "      <td>6092</td>\n",
       "      <td>5897</td>\n",
       "      <td>96.799081</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>264</td>\n",
       "      <td>5237</td>\n",
       "      <td>5075</td>\n",
       "      <td>96.906626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>184</th>\n",
       "      <td>420</td>\n",
       "      <td>4679</td>\n",
       "      <td>4603</td>\n",
       "      <td>98.375721</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>58</th>\n",
       "      <td>176</td>\n",
       "      <td>4328</td>\n",
       "      <td>4254</td>\n",
       "      <td>98.290203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>338</td>\n",
       "      <td>4277</td>\n",
       "      <td>4237</td>\n",
       "      <td>99.064765</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>199</td>\n",
       "      <td>4240</td>\n",
       "      <td>4122</td>\n",
       "      <td>97.216981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>90</th>\n",
       "      <td>243</td>\n",
       "      <td>4243</td>\n",
       "      <td>4104</td>\n",
       "      <td>96.724016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>206</th>\n",
       "      <td>458</td>\n",
       "      <td>3701</td>\n",
       "      <td>3643</td>\n",
       "      <td>98.432856</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200</th>\n",
       "      <td>443</td>\n",
       "      <td>3656</td>\n",
       "      <td>3614</td>\n",
       "      <td>98.851204</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     hospitalid  number_of_patients  number_of_patients_with_tbl  \\\n",
       "11           73                7059                         6861   \n",
       "54          167                6092                         5897   \n",
       "106         264                5237                         5075   \n",
       "184         420                4679                         4603   \n",
       "58          176                4328                         4254   \n",
       "134         338                4277                         4237   \n",
       "71          199                4240                         4122   \n",
       "90          243                4243                         4104   \n",
       "206         458                3701                         3643   \n",
       "200         443                3656                         3614   \n",
       "\n",
       "     data completion  \n",
       "11         97.195070  \n",
       "54         96.799081  \n",
       "106        96.906626  \n",
       "184        98.375721  \n",
       "58         98.290203  \n",
       "134        99.064765  \n",
       "71         97.216981  \n",
       "90         96.724016  \n",
       "206        98.432856  \n",
       "200        98.851204  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = query_schema + \"\"\"\n",
    "with t as\n",
    "(\n",
    "select distinct patientunitstayid\n",
    "from lab\n",
    ")\n",
    "select \n",
    "  pt.hospitalid\n",
    "  , count(distinct pt.patientunitstayid) as number_of_patients\n",
    "  , count(distinct t.patientunitstayid) as number_of_patients_with_tbl\n",
    "from patient pt\n",
    "left join t\n",
    "  on pt.patientunitstayid = t.patientunitstayid\n",
    "group by pt.hospitalid\n",
    "\"\"\".format(patientunitstayid)\n",
    "\n",
    "df = pd.read_sql_query(query, con)\n",
    "df['data completion'] = df['number_of_patients_with_tbl'] / df['number_of_patients'] * 100.0\n",
    "df.sort_values('number_of_patients_with_tbl', ascending=False, inplace=True)\n",
    "df.head(n=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>hospitalid</th>\n",
       "      <th>number_of_patients</th>\n",
       "      <th>number_of_patients_with_tbl</th>\n",
       "      <th>data completion</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>91</td>\n",
       "      <td>15</td>\n",
       "      <td>14</td>\n",
       "      <td>93.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>151</td>\n",
       "      <td>14</td>\n",
       "      <td>13</td>\n",
       "      <td>92.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138</th>\n",
       "      <td>351</td>\n",
       "      <td>27</td>\n",
       "      <td>13</td>\n",
       "      <td>48.148148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>86</td>\n",
       "      <td>15</td>\n",
       "      <td>12</td>\n",
       "      <td>80.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>129</th>\n",
       "      <td>323</td>\n",
       "      <td>11</td>\n",
       "      <td>11</td>\n",
       "      <td>100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>361</td>\n",
       "      <td>13</td>\n",
       "      <td>10</td>\n",
       "      <td>76.923077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>94</td>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>154</th>\n",
       "      <td>385</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>100.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>136</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>66.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>176</th>\n",
       "      <td>409</td>\n",
       "      <td>33</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     hospitalid  number_of_patients  number_of_patients_with_tbl  \\\n",
       "18           91                  15                           14   \n",
       "45          151                  14                           13   \n",
       "138         351                  27                           13   \n",
       "16           86                  15                           12   \n",
       "129         323                  11                           11   \n",
       "146         361                  13                           10   \n",
       "21           94                   9                            9   \n",
       "154         385                   3                            3   \n",
       "36          136                   3                            2   \n",
       "176         409                  33                            0   \n",
       "\n",
       "     data completion  \n",
       "18         93.333333  \n",
       "45         92.857143  \n",
       "138        48.148148  \n",
       "16         80.000000  \n",
       "129       100.000000  \n",
       "146        76.923077  \n",
       "21        100.000000  \n",
       "154       100.000000  \n",
       "36         66.666667  \n",
       "176         0.000000  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.tail(n=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class=\"vega-embed\" id=\"af377dc8-94ca-45f2-abdb-2f8a7c207a59\"></div>\n",
       "\n",
       "<style>\n",
       ".vega-embed svg, .vega-embed canvas {\n",
       "  border: 1px dotted gray;\n",
       "}\n",
       "\n",
       ".vega-embed .vega-actions a {\n",
       "  margin-right: 6px;\n",
       "}\n",
       "</style>\n"
      ]
     },
     "metadata": {
      "jupyter-vega3": "#af377dc8-94ca-45f2-abdb-2f8a7c207a59"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "var spec = {\"data\": {\"values\": [{\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.19507012324692}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.79908076165464}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.90662593087646}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.37572130797179}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.2902033271719}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.06476502221183}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.21698113207547}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.72401602639641}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.43285598486895}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.85120350109409}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.82191780821918}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.05609552901971}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.20763063312137}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.93206763571641}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.8709466098919}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.57191431485889}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 89.27789934354486}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.47275251648733}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.8293551834699}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.01224812327143}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.61260887598507}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.33649289099526}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.07962529274005}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.4754411063424}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.13378248315688}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.5583173996176}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 95.54170661553212}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 94.62416745956233}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.74186886938566}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 94.84893511639424}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 95.10204081632652}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.6}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.62547220723151}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.48484848484848}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.80546075085324}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.85518030910131}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 91.67585446527012}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.04648390941597}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 91.01861993428258}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.68671679197995}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.08436724565756}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.23469387755102}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.09208819714657}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.86781229345671}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.79338842975206}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 95.69821310390469}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.55156950672645}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.6953541507997}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.586017282011}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.86561264822134}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.95330112721416}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.7354988399072}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.60743134087238}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.4949494949495}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.31856899488926}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.56293706293707}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.20704845814979}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.72924187725631}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.43589743589743}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.96907216494846}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.70674486803519}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.8388625592417}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.6951219512195}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.79402677651905}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.86150712830958}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 95.80838323353294}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.63369245837414}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.46120689655173}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.51531151003168}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.4475138121547}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.3975903614458}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.14738124238734}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 91.56908665105387}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 89.90610328638498}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.02631578947368}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.19463087248323}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.92328398384926}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.58677685950413}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.89958734525447}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.86013986013987}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.85955056179775}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.85611510791367}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 95.71230982019364}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.55282199710564}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.94117647058823}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 94.79768786127167}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.24012158054711}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.06103286384976}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.68}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 89.38307030129124}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.28434504792332}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.83249581239531}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.49324324324324}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.65928449744463}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.15110356536503}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.46416382252559}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.47826086956522}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.82547993019197}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.9283276450512}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.82363315696648}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 95.75551782682513}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 94.75524475524476}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.62773722627736}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.90476190476191}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.60079840319361}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.79423868312757}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 95.95141700404858}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 94.75806451612904}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 94.12955465587044}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.13793103448276}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.03063457330416}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.98657718120806}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.66812227074236}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.01234567901234}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.55501222493888}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.79411764705883}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.73614775725594}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.82539682539682}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.45504087193461}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.4413407821229}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 92.6509186351706}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.15254237288136}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.59550561797754}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.84813753581662}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 88.12664907651715}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 89.00804289544236}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.6951219512195}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.36908517350159}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.74213836477988}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.67637540453075}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.7012987012987}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.01960784313727}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 91.6923076923077}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.68211920529801}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.3006993006993}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 85.66978193146417}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.22178988326849}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.6078431372549}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.4375}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.59183673469387}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.76113360323887}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.33333333333333}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.14163090128756}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.11111111111111}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 94.84978540772532}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.09909909909909}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.53488372093024}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.42105263157895}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.15668202764977}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.52380952380952}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.48186528497409}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.30508474576271}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.125}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 88.06818181818183}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.33774834437085}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 65.45454545454545}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.30555555555556}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.23664122137404}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 96.18320610687023}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 99.19354838709677}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 87.38738738738738}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.82716049382715}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.21428571428571}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 78.78787878787878}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 98.11320754716981}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 72.85714285714285}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 94.44444444444444}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 97.72727272727273}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 92.3076923076923}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.93939393939394}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 95.65217391304348}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 93.33333333333333}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 92.85714285714286}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 48.148148148148145}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 80.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 76.92307692307693}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 100.0}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 66.66666666666666}, {\"Number of hospitals\": \"data completion\", \"Percent of patients with data\": 0.0}]}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\", \"encoding\": {\"color\": {\"field\": \"Number of hospitals\", \"type\": \"nominal\"}, \"x\": {\"field\": \"Percent of patients with data\", \"bin\": {\"maxbins\": 10}, \"type\": \"quantitative\"}, \"y\": {\"type\": \"quantitative\", \"aggregate\": \"count\", \"stack\": null}}, \"mark\": \"bar\", \"height\": 300, \"selection\": {\"grid\": {\"type\": \"interval\", \"bind\": \"scales\"}}, \"width\": 450};\n",
       "var selector = \"#af377dc8-94ca-45f2-abdb-2f8a7c207a59\";\n",
       "var type = \"vega-lite\";\n",
       "\n",
       "var output_area = this;\n",
       "require(['nbextensions/jupyter-vega3/index'], function(vega) {\n",
       "  vega.render(selector, spec, type, output_area);\n",
       "}, function (err) {\n",
       "  if (err.requireType !== 'scripterror') {\n",
       "    throw(err);\n",
       "  }\n",
       "});\n"
      ]
     },
     "metadata": {
      "jupyter-vega3": "#af377dc8-94ca-45f2-abdb-2f8a7c207a59"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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"
     },
     "metadata": {
      "jupyter-vega3": "#af377dc8-94ca-45f2-abdb-2f8a7c207a59"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df[['data completion']].vgplot.hist(bins=10,\n",
    "                                    var_name='Number of hospitals',\n",
    "                                    value_name='Percent of patients with data')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Above we can see that very few hospitals are missing lab data. Most of the data at < 90% data completion is driven by a few hospitals with very few patients. The majority of hospitals have 90-100% of patients with data in the lab table (right side of histogram, 0-90% bin)."
   ]
  }
 ],
 "metadata": {
  "front-matter": {
   "date": "2015-09-01",
   "linktitle": "admissiondrug",
   "title": "admissiondrug"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
